
import java.awt.Component;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.awt.Component;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
/**
 *
 * @author tekoraik
 */
public class CIConjPares {
    private int kant,iant;
    private ControladorConjPares cdcp;
    private VistaConjPares vcp;
    private boolean paresCreados;
    private Progreso p;

    public CIConjPares(){
        kant=0;
        iant=0;
        cdcp = new ControladorConjPares();
        vcp = new VistaConjPares(this);
        p = new Progreso();
    }
    public VistaConjPares getVistaConjPares(){
        return vcp;
    }
    public ConjPares getConjPares() {
        return cdcp.getConjPares();
    }
    
    public void cargarConjPares (final Component cent) {

        
        Runnable accionDespues = new Runnable(){

            public void run() {
                p.setFin(false);
                vcp.cerrarDialogo();
            }
        };
        AccionProgreso a = new AccionProgreso(vcp.getBarraCarga(),p,accionDespues){

            public void run() {
                AccionCargarConjPares(cent,p);
            }
        };
        a.ejecutarYMonitorizar();
    }
    public void salvarConjPares(Component cent){
        if (paresCreados) {
            String ruta = vcp.preguntarRuta(cent,"Salvar", "Salvar conjunto de pares");
            if (!ruta.equals("")){
                try {
                    cdcp.salvarConjPares(ruta);
                    vcp.cambiarAPares();
                } catch (FileNotFoundException ex) {
                    vcp.mostrarError("Ruta no valida", cent);
                } catch (IOException ex) {
                    vcp.mostrarError("Error en el salvado del archivo", cent);
                }
            }
        }
        else vcp.mostrarError("No hay ningún conjunto de pares", vcp);
    }
    public void nuevoConjPares () {
        if (paresCreados) cdcp.eliminarConjPares();
        paresCreados = true;
        vcp.limpiar();
        vcp.cambiarAPares();
    }
    public void eliminarConjPares() {
        if (paresCreados == true) {
            cdcp.eliminarConjPares();
            paresCreados = false;
            vcp.limpiar();
            vcp.cambiarANoCP();
        }
        else vcp.mostrarError("No hay ningún conjunto de pares", vcp);
    }
     public void eliminarConjPares2() {
        cdcp.eliminarConjPares();
    }
    public void nuevoPar (String s1, String s2) {
        cdcp.anadirPar(s1, s2);
    }
    public void eliminarPar (String s1, String s2){
        cdcp.decrementarPar(s1, s2);
    }
    public void modificarPar (String s1, String s2, String s1Nuevo, String s2Nuevo){
        cdcp.modificarPar(s1, s2, s1Nuevo, s2Nuevo);
    }
    public String [] buscarPar (String s1, String s2) {
        String [] res = cdcp.buscarPar(s1, s2);
        return res;
    }
    public int buscarIndicePar (String s1, String s2) {
        
        return cdcp.buscarParIndice(s1, s2);
    }
    public int longitudPares () {
        return cdcp.longitudPares();
    }
    public boolean paresCreados() {
        return paresCreados;
    }
    public void refrescarTabla(){
        int i,k;
        if (kant==0 && iant ==0){
            i=0;
            k=vcp.cuantasFilas();
        } else {
            vcp.borrarIK(iant,kant);
            i=vcp.queFila();
            k=vcp.cuantasFilas();

        }
        String[][] s = cdcp.getPares(i, k);
        vcp.rellenarIK(i,k,s);
        kant=k;
        iant=i;
    }
    private void AccionCargarConjPares(Component cent, Progreso p){
                //vcp.cambiarANoCP();
        String ruta = vcp.preguntarRuta(cent,"Cargar","Cargar conjunto de pares");
        if (!ruta.equals("")){
            try {
                vcp.abrirDialogo();
                String[][] pares = cdcp.cargarConjPares(ruta,p);
                vcp.nuevaTabla(pares.length);
                vcp.rellenarIK(0, vcp.cuantasFilas(), pares);
                //vcp.anadirPares(pares,new File(ruta).getName());
                paresCreados = true;
                vcp.cambiarAPares();
            } catch (FileNotFoundException ex) {
                vcp.mostrarError("No se encuentra el archivo", cent);
            } catch (IOException ex) {
                vcp.mostrarError("Error en la lectura del archivo", cent);
            } catch (FormatoConjParesNoValido ex){
                vcp.mensaje("Formato del conjunto no valido, ha de tener (string,string,integer)");
            }
        }
    }
}
